package br.com.foxinline.servico;

import br.com.foxinline.enums.AtoImovel;
import br.com.foxinline.modelo.TipoAtoImovel;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class TipoAtoImovelServico extends ServicoGenerico<TipoAtoImovel> {

    public TipoAtoImovelServico() {
        super(TipoAtoImovel.class);
    }

    public List<TipoAtoImovel> pesquisar(TipoAtoImovel tipoAto) {
        String sql = "select tipoAto from TipoAtoImovel tipoAto where tipoAto.ativo = true";

        if (!tipoAto.getDescricao().isEmpty()) {
            sql += " and lower(tipoAto.descricao) like '%" + tipoAto.getDescricao().toLowerCase() + "%'";
        }

        if (tipoAto.getAtoImovel() != null) {
            sql += " and tipoAto.atoImovel = :tipo";
        }

        Query query = getEntityManager().createQuery(sql);

        if (tipoAto.getAtoImovel() != null) {
            query.setParameter("tipo", tipoAto.getAtoImovel());
        }

        return query.getResultList();
    }

    public List<TipoAtoImovel> autocompletarAverbacoes(String descricao) {
        String sql = "select tipoAto from TipoAtoImovel tipoAto where tipoAto.ativo = true";

        sql += " and lower(tipoAto.descricao) like '%" + descricao + "%'";

        sql += " and tipoAto.atoImovel = :tipo";

        Query query = getEntityManager().createQuery(sql);

        query.setParameter("tipo", AtoImovel.AVERBACAO);

        return query.getResultList();
    }
    
    public List<TipoAtoImovel> autocompletarRegistros(String descricao) {
        String sql = "select tipoAto from TipoAtoImovel tipoAto where tipoAto.ativo = true";

        sql += " and lower(tipoAto.descricao) like '%" + descricao + "%'";

        sql += " and tipoAto.atoImovel = :tipo";

        Query query = getEntityManager().createQuery(sql);

        query.setParameter("tipo", AtoImovel.REGISTRO);

        return query.getResultList();
    }    

}
